Prisma を綺麗に使いたければ MVC という発想を忘れるのが良いのでは
#Prisma #MVC #ORM
/fsubal/Prisma を綺麗に使いたければ MVC という発想を忘れるのが良いのでは
関連
PrismaはORMなのか?
modelという抽象ではなく参照か更新かで分けたい
koushisa.icon
データソースのアーキテクチャに関するパターン(Data Source Architectural Patterns)で分類すると
PrismaはActiveRecordではなくData Mapper
戻り値はモデルではなくEntity
このメンタルモデルが違うので他のORMに慣れている場合はアンラーニングが必要そう
モデリングの考え方
ドメインモデルというよりは、CQSの考え方がマッチする
モデルの単位はテーブルではなくコマンド (= モデルとコマンドは1:1)
コマンドを起点に単方向データフロー(unidirectional data flow)を形成するイメージ
わかってないこと
パッケージング
トップレベルにmutations, queries的なのを掘ったオニオンアーキテクチャに近そう
Data Mapper的なORMがRPCやGraphQLと相性がいいと言われるのはこういう力学があるからかkoushisa.icon
SVO型のパッケージングで機能的凝集を目指すオニオンアーキテクチャ
これはフロントエンドの考え方だけどバックエンドでもイメージは近い
バックエンドの場合はHTTPリクエストをコマンドに紐づけるルーティングがもう一つ上にあるはず
^ はコマンドから利用される内部のモデルのパッケージング
Domain Modeling Made Functionalの考え方が大事そう
データ構造と振る舞いを切り離す
永続化知識の分離について
ドメインモデルの内部には、永続化にまつわる情報を混入させるべきではない
永続化をエッジに押しやると、Repositoryパターンが不要になる
実践例
TypeScript による GraphQL バックエンド開発
これわかりやすいなkoushisa.icon
他
バックエンドはフレームワーク>言語